import java.util.*;

/**
 * @author LKQ
 * @date 2022/4/30 11:48
 * @description 贪心，遇到正数直接加，遇到负数，如果还没有超过当前生命值，那么可以减少，超过了，那么加回前面扣血最多的一次，调整到后面
 */
public class Solution {
    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] nums = {-1, -1, 10};
        solution.magicTower(nums);
    }
    public int magicTower(int[] nums) {
        long health = 1, sum = 1, ans = 0;
        for (int a: nums) {
            sum += a;
        }
        if (sum <= 0) {
            return -1;
        }
        // 保存扣血的数值
        PriorityQueue<Long> pq = new PriorityQueue<>();
        for (int num : nums) {
            if (num < 0) {
                pq.add((long) num);
                if (health + num <= 0) {
                    // 如果走进这个房间后就挂了，那么赶紧将前面扣最大血的房间移动到后面，
                    ans++;
                    health -= pq.poll();
                }
            }
            health += num;
        }
        return (int) ans;
    }
}
